// Copyright (c) Lawrence Livermore National Security, LLC and other VisIt
// Project developers.  See the top-level LICENSE file for dates and other
// details.  No copyright assignment is required to contribute to VisIt.

// ************************************************************************* //
//  File: avtToroidalPoloidalProjectionFilter.h
// ************************************************************************* //

#ifndef AVT_ToroidalPoloidalProjection_FILTER_H
#define AVT_ToroidalPoloidalProjection_FILTER_H

#ifdef __DEPRECATED //TODO: REMOVE THIS :)
#undef __DEPRECATED
#include <avtPluginDataTreeIterator.h>

#include <ToroidalPoloidalProjection.h>

#define __DEPRECATED
#else
#include <avtPluginDataTreeIterator.h>

#include <ToroidalPoloidalProjection.h>

#endif

class vtkPoints;


// ****************************************************************************
//  Class: avtToroidalPoloidalProjectionFilter
//
//  Purpose:
//      A plugin operator for ToroidalPoloidalProjection.
//
//  Programmer: hari -- generated by xml2avt
//  Creation:   Tue Feb 1 09:27:46 PDT 2011
//
//  Modifications:
//    Eric Brugger, Tue Aug 19 09:35:08 PDT 2014
//    Modified the class to work with avtDataRepresentation.
//
// ****************************************************************************

class avtToroidalPoloidalProjectionFilter : public avtPluginDataTreeIterator
{
  public:
                         avtToroidalPoloidalProjectionFilter();
    virtual             ~avtToroidalPoloidalProjectionFilter();

    static avtFilter    *Create();

    virtual const char  *GetType(void)  { return "avtToroidalPoloidalProjectionFilter"; }
    virtual const char  *GetDescription(void)
                             { return "ToroidalPoloidalProjection"; }

    virtual void         SetAtts(const AttributeGroup*);
    virtual bool         Equivalent(const AttributeGroup*);

  protected:
    virtual avtVector    GetCentroid(vtkPoints* inPts);

    double rMax;
    ToroidalPoloidalProjection   atts;

    virtual avtDataRepresentation *ExecuteData(avtDataRepresentation *);
    void UpdateDataObjectInfo(void);
};
#endif
